package com.cskaoyan.javase.oop3._2inner._3sumup;
/**
 * 总结一下静态内部类和成员内部类
 *      静态内部类和外围类互相独立
 *      成员内部类和外围类具有强依赖关系,成员内部类对象必须持有外围类对象的引用
 *
 * 使用成员位置内部类的一个使用场景:
 *      1.隐藏类,为了让外界无法得知内部类,这是一种封装的思想.
 *      2.互相任意成员,不受权限限制.
 *      3.使用内部类可以实现多继承,真正意义上的继承
 *          间接实现
 *          实际开发中如果希望能够多继承,可以考虑使用这种方式
 *          但是实际开发中不多见
 *
 * @since 14:21
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 在外部类当中创建内部类对象,都需要指出该内部类的归属外围类
        EnclosedClazz.NestedClazz nc = new EnclosedClazz.NestedClazz();
        EnclosedClazz.InnerClazz ic = new EnclosedClazz().new InnerClazz();
        System.out.println(ic.getA());
    }
}
class A{
    void test(){}
}
class B{
    void test(){}
}
class C{
    void test(){}
}
class D{
    class ASon extends A{}
    class BSon extends B{}
    class CSon extends C{}

    public void test(){
        new ASon().test();
        new BSon().test();
        new CSon().test();
    }
}

class EnclosedClazz{
    int a = 100;
    static class NestedClazz{

    }

    class InnerClazz{
        public int getA(){
            return a;
        }
    }
}